﻿/*
    Copyright (C) 2012  Milton da Silva Junior - admin.jr.dotnet@gmail.com

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Loja.Business;
using Loja.DataDTO;
using Telerik.Web.Mvc;

namespace Loja.Controllers
{
    public class PedidoController : Controller
    {
        private PessoaBLL pessoaBll;
        private PedidoBLL pedidoBll;
        private int idUsuarioLogado;

        public PedidoController()
        {
            idUsuarioLogado = 1;
        }

        private void GetComprador()
        {
            pessoaBll = new PessoaBLL(true);
            ViewData["Comprador"] = pessoaBll.GetClientes();
        }

        public ActionResult Index()
        {
            return View();
        }

        public PartialViewResult ListaItemPedido(int idPedido)
        {
            pedidoBll = new PedidoBLL(true);
            var listaItemPedido = pedidoBll.ListaItemPedidoDTO(idPedido);
            GridModel<ItemPedidoDTO> gridModel = new GridModel<ItemPedidoDTO> { Data = listaItemPedido, Total = listaItemPedido.Count };

            return PartialView("_PartialItemPedidoLista", gridModel);
        }

        public ActionResult Listar()
        {
            pedidoBll = new PedidoBLL(true);

            int total = 0;
            var listaPedidos = pedidoBll.GetListaPedidoDTO(0, 10, ref total, idUsuarioLogado);

            GridModel<PedidoDTO> gridModel = new GridModel<PedidoDTO> { Data = listaPedidos, Total = total };
            return PartialView("_PartialList", gridModel);
        }

        public PartialViewResult Novo()
        {
            pedidoBll = new PedidoBLL(false);
            GetComprador();
            var pedidoDTO = pedidoBll.GetPedidoDTO(0);
            pedidoDTO.IdPedido = pedidoBll.Inserir(pedidoBll.GetPedidoDTO(0));

            return PartialView("_PartialRegister", pedidoDTO);
        }

        public PartialViewResult Editar(int idPedido)
        {
            pedidoBll = new PedidoBLL(true);
            GetComprador();
            var pedidoDTO = pedidoBll.GetPedidoDTO(idPedido);

            return PartialView("_PartialRegister", pedidoDTO);
        }

        [HttpPost]
        public JsonResult AdicionarItemPedido(ItemPedidoDTO itemPedidoDTO)
        {
            PedidoBLL pedidoBll = new PedidoBLL(false);
            string erros = string.Empty;

            itemPedidoDTO.IdUsuarioLogado = 1;
            erros = pedidoBll.SalvarItemPedido(itemPedidoDTO);

            if (!string.IsNullOrEmpty(erros))
            {
                return Json(new { Erro = true, Mensagem = erros }, JsonRequestBehavior.AllowGet);
            }

            return Json(new { Erro = false, Mensagem = "Item do pedido Inserido com sucesso!" }, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public ActionResult FecharPedido(PedidoDTO pedidoDTO)
        {
            string erros = new PedidoBLL().FecharPedido(pedidoDTO);

            if (!string.IsNullOrEmpty(erros))
            {
                return Json(new { Erro = true, Mensagem = erros});
            }
            return Json(new { Erro = false, Mensagem = "Pedido fechado com sucesso!" });
        }
    }
}
